package com.ybear.ybhotrepairdemo;

import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

/**
 * 说明：
 * 1.测试的dex文件在项目下的 testDexFile 文件夹中。（cls_main.dex和cls_test.dex）
 * 2.未修复：当点击Hello Word!时会：提示“未修复”，“未修复时点我会抛异常”时会：抛异常
 *   已修复：当点击Hello Word!时会：提示“已修复”，“未修复时点我会抛异常”时会：提示“测试模块”
 * 3.为了方便测试，两处错误都进行了独立打包，正常情况下可以打包到一个dex文件下。
 *
 *
 * Dex打包方式：（推荐看完在操作）
 * 1.打开android SDK目录
 * 2.找到build-tools文件夹
 * 3.选择打包的版本文件夹。例示：sdk\build-tools\29.0.0
 * 4.在当前文件夹下打开cmd，输入以下命令：
 * 命令：dx --dex --output=输出目录\classes.dex 空格 打包目录
 * 例示：dx --dex --output=C:\dex\classes.dex C:\dex
 * 或者：.\dx --dex --output=C:\dex\classes.dex C:\dex
 *
 * 例示中的dex文件夹下放置打包的class文件，class文件必须包含完整的项目路径。
 * 完整路径说明：在AndroidStudio的菜单栏中点击 Build - ReBuild Project 之后class文件就编译好了
 *            编译的文件夹：app\build\intermediates\javac\debug\compileDebugJavaWithJavac\classes下
 *            这里边存放着编译好的完整项目，比如项目以com开头，那com就是项目文件夹，将这整个com文件夹复制到dex下，
 *            这个com文件夹就是完整项目路径，你可以删除非修复的文件减少dex的文件大小。
 *
 *
 * 注入Dex流程：
 * 1.将打包好的dex文件放入指定位置。demo预设的路径：/data/data/包名/files/odex/dex文件
 * 2.可以通过 {@link MyApplication#testWriteDexFile(Context,String)} 进行存放
 * 2.启动未修复的app
 *
 * @see MyApplication   更多内容可以参考这里
 */
public class MainActivity extends AppCompatActivity {
    private TestModel mTestModel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTestModel = new TestModel();
    }

    /**
     * 待修复的类
     * @param v
     */
    public void doTestOnClick(View v) {
        Toast.makeText(this, "尚未修复", Toast.LENGTH_LONG).show();
    }

    public void doTestModelOnClick(View v) {
        mTestModel.test( this );
    }
}
